您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

使用虚拟表面摇摄

  • 申请号:CN200980121632.0 申请公布号: CN102067180A
  • 申请日: 2009-04-14 申请公布日: 2011-05-18
  • 申请(专利权)人: 专利代理机构: 中原信达知识产权代理有限责任公司
  • 分类号:G06T15/20

专利介绍

本发明涉及在三维环境中摇摄虚拟相机。在本发明的一个实施例中,一种计算机实现的方法在三维环境中摇摄虚拟相机。在该方法实施例中,确定在三维环境中的三维模型上的第一点。根据第一点、三维模型和虚拟相机在三维环境中的位所,确定虚拟表面。确定在虚拟表面上的第二点。最后,根据第一点和第二点来改变三维模型的位置。
1.一种用于在三维环境中摇摄虚拟相机的计算机实现的方法,包括:(a)确定在所述三维环境中的三维模型上的第一点;(b)根据所述第一点、所述三维模型和所述虚拟相机在所述三维环境中的位所,确定虚拟表面;(c)确定在所述虚拟表面上的第二点;以及(d)根据所述第一点和所述第二点来改变所述三维模型的位置。
2.如权利要求1所述的方法,其中步骤(d)的所述改变包括:以在连接所述第一点和所述三维模型的中心的第一线段与连接所述第二点和所述三维模型的所述中心的第二线段之间的角度来旋转所述三维模型。
3.如权利要求2所述的方法,其中步骤(b)的所述确定包括:(i)确定摇摄球面,其中所述摇摄球面的中心位于所述三维模型的所述中心处,以及其中所述摇摄球面具有等于在所述三维模型的所述中心与所述第一点之间的距离的半径;以及(ii)确定适配到所述摇摄表面的所述虚拟表面,使得所述虚拟表面与所述摇摄表面一起形成与所述摇摄球面光滑适配的连续表面。
4.如权利要求3所述的方法,其中所述三维模型包括地球模型。
5.如权利要求3所述的方法,其中步骤(ii)的所述确定包括:确定所述虚拟表面,其中所述虚拟表面是来自所述虚拟相机的透视角的凹面。
6.如权利要求5所述的方法,其中步骤(ii)的所述确定进一步包括:确定所述虚拟表面,其中所述虚拟表面是所述摇摄球面的一部分的镜像。
7.如权利要求1所述的方法,其中步骤(a)的所述确定包括:(i)从所述虚拟相机的焦点延伸第一射线通过所述虚拟相机的视口上的第三点,所述第三点对应于第一用户选择;以及(ii)确定在所述第一射线与所述三维模型之间的交点处的所述第一点。
8.如权利要求7所述的方法,其中所述确定步骤(c)包括:(i)从所述虚拟相机的所述焦点延伸第二射线通过所述虚拟相机的所述视口上的第四点,所述第四点对应于第二用户选择;以及(ii)确定在所述第二射线与所述三维模型之间的交点处的所述第二点。
9.如权利要求7所述的方法,其中步骤(b)的所述确定包括:(i)确定摇摄球面,其中所述摇摄球面的中心位于所述三维模型的中心处,以及其中所述摇摄球面具有等于在所述三维模型的所述中心与所述第一点之间的距离的半径;以及(ii)确定在连接点处连接到所述摇摄球面的虚拟表面,其中所述虚拟表面基本上满足等式ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="130"/>其中θ0是在所述第一射线与连接所述虚拟相机和所述三维模型的中心的线段之间的角度,其中Φ0是在连接所述虚拟相机和所述三维模型的所述中心的所述第一线段与连接所述三维模型的所述中心和所述第一点的第二线段之间的角度,其中dΦ是在连接所述三维模型的所述中心和所述第一点的所述第二线段与连接所述三维模型的所述中心和所述连接点的第三线段之间的角度,其中dθ是在所述第一射线与连接所述虚拟相机和所述连接点的第三线段之间的角度,其中θ是在连接所述虚拟相机和所述三维模型的所述中心的所述第二线段与连接所述虚拟相机和所述虚拟表面上的可变点的第四线段之间的角度,以及其中Φ是在连接所述虚拟相机和所述三维模型的所述中心的所述第二线段与连接所述三维模型的所述中心和所述虚拟表面上的所述可变点的第五线段之间的角度。
10.一种用于在三维环境中摇摄虚拟相机的系统,包括:摇摄模块,所述摇摄模块确定在所述三维环境中的三维模型上的第一点,以及确定在虚拟表面上的第二点;虚拟表面计算器模块,所述虚拟表面计算器模块根据所述第一点、所述三维模型和所述虚拟相机在所述三维环境中的位所,确定所述虚拟表面;以及旋转器模块,所述旋转器模块根据所述第一点和所述第二点来改变所述三维模型的位置。
11.如权利要求10所述的系统,其中所述旋转器模块以在连接所述第一点和所述三维模型的中心的第一线段与连接所述第二点和所述三维模型的所述中心的第二线段之间的角度来旋转所述三维模型。
12.如权利要求11所述的系统,其中所述摇摄模块确定摇摄球面,其中所述摇摄球面的中心位于所述三维模型的所述中心处,以及其中所述摇摄球面具有等于在所述三维模型的所述中心与所述第一点之间的距离的半径,以及其中所述摇摄模块确定适配到所述摇摄表面的所述虚拟表面,使得所述虚拟表面与所述摇摄表面一起形成与所述摇摄球面光滑适配的连续表面。
13.如权利要求12所述的系统,其中所述三维模型包括地球模型。
14.如权利要求12所述的系统,其中所述虚拟表面是来自所述虚拟相机的透视角的凹面。
15.如权利要求14所述的系统,其中所述虚拟表面是所述摇摄球面的一部分的镜像。
16.如权利要求10所述的系统,其中所述摇摄模块从所述虚拟相机的焦点延伸第一射线通过所述虚拟相机的视口上的第三点,所述第三点对应于第一用户选择,以及其中所述摇摄模块确定在所述第一射线与所述三维模型之间的交点处的所述第一点。
17.如权利要求16所述的系统,其中所述摇摄模块从所述虚拟相机的所述焦点延伸第二射线通过所述虚拟相机的所述视口上的第四点,所述第四点对应于第二用户选择,以及其中所述第二点在所述第二射线与所述三维模型之间的交点处。
18.如权利要求16所述的系统,其中所述摇摄模块确定摇摄球面,其中所述摇摄球面的中心位于所述三维模型的中心处,以及其中所述摇摄球面具有等于在所述三维模型的所述中心与所述第一点之间的距离的半径,以及其中所述虚拟表面计算器模块确定在连接点处连接到所述摇摄球面的虚拟表面,其中所述虚拟表面基本上满足等式ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="130"/>其中θ0是在所述第一射线与连接所述虚拟相机和所述三维模型的中心的线段之间的角度,其中Φ0是在连接所述虚拟相机和所述三维模型的所述中心的所述第一线段与连接所述三维模型的所述中心和所述第一点的第二线段之间的角度,其中dΦ是在连接所述三维模型的所述中心和所述第一点的所述第二线段与连接所述三维模型的所述中心和所述连接点的第三线段之间的角度,其中dθ是在所述第一射线与连接所述虚拟相机和所述连接点的第三线段之间的角度,其中θ是在连接所述虚拟相机和所述三维模型的所述中心的所述第二线段与连接所述虚拟相机和所述虚拟表面上的可变点的第四线段之间的角度,以及其中Φ是在连接所述虚拟相机和所述三维模型的所述中心的所述第二线段与连接所述三维模型的所述中心和所述虚拟表面上的所述可变点的第五线段之间的角度。
19.一种用于在包括地球的三维模型的三维环境中摇摄虚拟相机的计算机实现的方法,包括:(a)在显示区域显示来自所述虚拟相机的透视角的所述三维模型;(b)使用户能够用光标在所述显示区域上选择第一点;(c)根据所述第一点来确定第一屏幕射线;(d)使所述用户能够将所述光标移动到所述显示区域中的第二点;(e)根据所述第二点来确定第二屏幕射线;以及(f)围绕通过所述三维模型的旋转点的轴旋转所述三维模型,来以摇摄速率限定的速度跟随所述光标,其中所述摇摄速率是所述三维模型的旋转角度与在所述第一屏幕射线和所述第二屏幕射线之间的角度的比率,以及其中所述摇摄速率不超过阈值。
20.一种用于在三维环境中摇摄虚拟相机的系统,包括:用于确定在所述三维环境中的三维模型上的第一点的装置;用于根据所述第一点、所述三维模型和所述虚拟相机在所述三维环境中的位所,确定虚拟表面的装置;用于确定在所述虚拟表面上的第二点的装置;以及用于根据所述第一点和所述第二点来改变所述三维模型的位置的装置。
21.一种其上存储有计算机可执行指令的有形计算机可读介质,如果计算设备执行所述计算机可执行指令,则促使所述计算设备执行以下方法:(a)确定在所述三维环境中的三维模型上的第一点;(b)根据所述第一点、所述三维模型和所述虚拟相机在所述三维环境中的位所,确定虚拟表面;(c)确定在所述虚拟表面上的第二点;以及(d)根据所述第一点和所述第二点来改变所述三维模型的位置。技术领域
本发明涉及在三维环境中移动虚拟相机。
背景技术
存在用于导航通过三维环境来显示三维数据的系统。三维环境包括虚拟相机。虚拟相机具有定义向用户显示哪些三维数据的透视角(perspective)。用户可以输入摇摄(pan)虚拟相机的数据。通过摇摄虚拟相机,用户在三维环境中导航。一种类型的摇摄虚拟相机以在三维环境中导航的系统是地理信息系统。地理信息系统是用于存储、检索、操纵以及显示地球的三维模型的系统。三维模型可以包括映射到诸如高山、山谷和峡谷的地形的卫星图像纹理。此外,三维模型可以包括建筑物和其它三维特征。随着虚拟相机的透视角变得与地球相切,摇摄变得越来越不稳定。对用户的输入的较小改变摇摄虚拟相机较大距离。这对于用户而言会令人迷惑。需要用于在三维环境中更稳定的摇摄的系统和方法。
发明内容
本发明涉及在三维环境中摇摄。在本发明的一个实施例中,一种计算机实现的方法在三维环境中摇摄虚拟相机。在该方法实施例中,确定在三维环境中的三维模型上的第一点。根据第一点、三维模型和虚拟相机在三维环境中的位所,确定虚拟表面。确定在虚拟表面上的第二点。最后,根据第一点和第二点来改变三维模型的位置。在第二实施例中,一个系统在三维环境中摇摄虚拟相机。该系统包括摇摄模块,其确定在三维环境中的三维模型上的第一点。摇摄模块还确定虚拟表面上的第二点。虚拟表面计算器模块根据第一点、三维模型和虚拟相机在三维环境中的位所来确定虚拟表面。旋转器模块根据第一和第二点来改变三维模型的位置。在第三实施例中,一种计算机实现的方法在包括地球的三维模型的三维环境中摇摄虚拟相机。该方法包括:在显示区域显示来自虚拟相机的透视角的三维模型,使用户能够用光标在显示区域上选择第一点,以及根据第一点来确定第一屏幕射线。该方法进一步包括:使用户能够将光标移动到显示区域中的第二点,根据第二点来确定第二屏幕射线,以及围绕通过三维模型的旋转点(例如,中心)的轴旋转三维模型,来以摇摄速率定义的速度跟随光标。摇摄速率是三维模型的旋转角度与在第一屏幕射线和第二屏幕射线之间的角度的比率。摇摄速率不超过阈值。利用虚拟表面来在三维环境中摇摄在虚拟相机的透视角几乎与三维模型相切时减少了三维模型的移动。通过减少三维模型的移动,本发明的实施例使摇摄更稳定。将在下面参考附图详细描述本发明的进一步实施例、特征和优势,以及本发明的各种实施例的结构和操作。
附图说明
在此合并并且形成本说明书的一部分的附图图示了本发明,并且与描述一起进一步用作解释本发明的原理,而且使有关领域技术人员能够制作并使用本发明。图1A是图示了在没有虚拟表面的情况下摇摄的图。图1B是图示了根据本发明的一个实施例的在具有虚拟表面的情况下摇摄的图。图2A是地理信息系统的用户界面的截屏。图2B是图示了用于在具有虚拟表面的情况下摇摄的显示区域的各区的图。图3是根据本发明的一个实施例的使用虚拟表面来摇摄的地理信息系统客户端的体系结构图。图4是用于使用虚拟表面来摇摄的方法的流程图,该方法可以在操作图3中的系统时使用。图5A是图示了根据图4中的方法中的一个步骤来确定替代射线的图。图5B是图示了根据图4中的方法中的一个步骤来确定命中(hit)点的图。图6是图示了用于根据图4中的方法中的一个步骤来构建虚拟表面的计算的图。图7A-B是图示了根据图4中的方法来确定与虚拟表面的交点以及旋转三维模型的图。元素在其中首次出现的附图典型地由相应参考数字中的最左边数字指示。在附图中,相同的参考数字可以指示同一或功能上相似的元素。
具体实施方式
本发明的实施例涉及使用虚拟表面来稳定摇摄。在随后的本发明的详细描述中,对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不必包括该特定特征、结构或特性。而且,这样的短语不一定是指同一实施例。此外,在与一个实施例有关地描述特定特征、结构或特性时,所认为的是,无论是否明确描述,与其它实施例结合地实现这样的特征、结构或特性在本领域技术人员的知识范围内。如在此所使用的,术语“摇摄”虚拟相机是指关于通过诸如三维模型的中心的旋转点的轴旋转三维模型。重要的是,应当注意,相对于相机移动三维模型等效于相对于三维模型移动相机。图1A示出了图示了在没有虚拟表面的情况下跟踪球摇摄的图100。图100示出了查看三维几何102的虚拟相机106。三维几何102包括地形116。如在下面详细描述的,三维几何102例如可以是具有在点112处的中心源的地球的三维模型,以及虚拟相机106可以定义在显示区域上向用户显示三维模型的哪些部分。用户可以在显示区域上选择第一点。结果,根据该点延伸射线114。在一个示例中,射线114可以从虚拟相机的焦点延伸通过虚拟相机的视口上的与在显示区域上选择的点相对应的点。将关于图5B更详细地描述可以如何确定射线114。一旦确定射线114,就确定了在射线114与三维模型102之间的交点108。确定与点108和三维模型102相对应的摇摄球面104。摇摄球面104是用于控制摇摄的三维表面。在一个示例中,摇摄球面104可以是具有在点112处的中心源,和等于在交点108与点112之间的距离的半径的球面。一旦确定摇摄球面104,用户就在显示区域上选择第二点,然后相应地旋转三维模型102。用户可以例如通过将鼠标移动到新的位置来在显示区域上选择第二点。作为用户选择的结果,确定对应于第二点的射线120。一旦确定射线120,就确定了在射线120与摇摄球面104之间的交点110。线段118连接点112与交点108,以及线段122连接点112与交点110。以在线段118与线段122之间的角度114旋转三维模型102。以这种方式,通过用例如鼠标在显示区域上选择点,并且移动鼠标,用户旋转模型以跟随鼠标的移动。虽然标准跟踪球摇摄具有优势,但是它可以是不稳定的。随着射线120逐渐变得与三维模型102和摇摄球面104相切,对用户的选择的较小改变导致模型102的较大旋转。本发明的实施例通过引入如关于图1B描述的虚拟表面使摇摄更稳定。图1B示出了图示了根据本发明的一个实施例的在具有虚拟表面的情况下摇摄的图150。如在图100中,在图150中,用户在显示区域上选择第一和第二点,结果,模型旋转。然而,虚拟表面减少模型的旋转,因此增加了稳定性。当用户在显示区域上选择了第一点时,如关于图100所描述的,确定射线114、交点108和摇摄球面104。一旦确定摇摄球面104,就确定了虚拟表面152。虚拟表面152和摇摄球面104一起形成连续、平滑的表面。虚拟表面152例如可以是与摇摄球面104的一部分相对的凹面。在一个实施例中,虚拟表面152可以是摇摄球面104的一部分的镜像。当用户在显示区域上选择了第二点时,根据用户选择延伸射线120,并且旋转三维模型102。确定在射线120与虚拟表面152之间的交点154。线段158连接点112与交点154。以在线段158与线段118之间的角度156旋转模型102。因此,使用虚拟表面152,而不是摇摄球面104来确定交点。以这种方式,在射线120变得与球面104相切时没有以突然方式发生模型102的旋转。将在下面关于剩余附图更详细地描述本发明的实施例。具体地,图2-3描述了使用虚拟表面来摇摄的地理信息系统。图4描述了可以在操作地理信息系统时使用的方法。最后,图5、6和7A-B包括详细说明该方法的图。图2A是可以使用虚拟表面来摇摄的地理信息系统的用户界面200的截屏。用户界面200包括用于显示地理数据的显示区域202。如前所述,在显示区域202中显示的数据来自虚拟相机的透视角。在一个实施例中,所述透视角由平截头体定义,所述平截头体诸如三维棱锥截去顶部。可以取决于在平截头体内的地理数据距虚拟相机的距离,以变化的细节水平显示该在平截头体内的地理数据。在显示区域202中显示的示例地理数据包括地球的图像。可以将这些图像渲染到表示创建地球的三维模型的地球的地形的几何上。可以显示的其它数据包括建筑物的三维模型。用户界面200包括用于改变虚拟相机的取向的控件204。例如,控件204使用户能够改变虚拟相机的高度、纬度、经度、斜度(pitch)、偏航(yaw)和滚动(roll)。在一个实施例中,使用诸如鼠标的计算机指示设备来操纵控件204。随着改变虚拟相机的取向,同时改变虚拟相机的平截头体和所显示的地理数据。除控件204外,用户还可以使用诸如计算机键盘或操纵杆的其它计算机输入设备来控制虚拟相机的取向。用户界面200还可以使用户能够摇摄虚拟相机。用户可以通过例如用计算机指示设备在显示区域202上选择第一点来摇摄虚拟相机。然后,用户可以移动计算机指示设备以在显示区域202上选择第二点。如下所述,地理信息系统根据用户选择的第一和第二点来旋转地球的模型。地理信息系统可以使用客户端-服务器计算机体系结构来操作。在这样的配置下,用户界面200驻存于客户端机器上。客户端机器可以是具有处理器、本地存储器、显示以及诸如键盘、鼠标和/或操纵杆的一个或多个计算机输入设备的通用计算机。替选地,客户端机器可以是专用计算设备,诸如移动手持设备。客户端机器通过诸如因特网的一个或多个网络与一个或多个服务器通信。类似于客户端机器,可以使用能够向客户端派发数据的任何通用计算机来实现服务器。将关于图3更详细地描述地理信息系统客户端的体系结构。图2B示出了图示了用于在具有虚拟表面的情况下摇摄的显示区域260的各区的图250。如在前面关于图2A中的显示区域202所描述的,显示区域260可以显示来自虚拟相机的透视角的地球的三维模型。用户可以通过例如用诸如鼠标的计算机指示设备控制的光标在显示区域260上选择第一点来摇摄虚拟相机。通过根据用户选择的点来延伸屏幕射线,可以确定三维模型中的命中点。然后,用户可以移动光标来在显示区域260上选择第二点。地球的三维模型可以旋转以跟随第二点。显示区域260包括区256、254和252。模型如何旋转以跟随第二点视哪个区包括第二点而变化。如果用户移动光标来在区256中选择第二点,则模型旋转,以使命中点处于光标下面。以这种方式,模型旋转以跟随光标。返回参见图1B,在区256中,根据光标位所来延伸的屏幕射线将与摇摄球面104相交。随着光标逐渐移动靠近区254,旋转的速率增大。在光标进入区254时,根据光标位所来延伸的屏幕射线将与虚拟表面152相交。在一个实施例中,可以构建虚拟表面,使得旋转的速率无论光标在区254中的位所如何保持恒定。换句话说,对于光标以X像素的任何移动,模型以恒定Y度旋转。此外,该速率可以被设置为在点258处(例如,摇摄表面与虚拟表面相遇处)的旋转速率,其中在点258处区256与区254连接。通过在摇摄表面与虚拟表面之间的交点处将在虚拟表面上的旋转速率设置为等于在摇摄球面上的速率,在这两个表面之间存在平滑过渡。该平滑过渡减少了用户在摇摄时会体验到颤动的可能性。最后,减少的颤动产生更平滑的摇摄体验。在一个实施例中,可以构建虚拟表面,使得摇摄是可逆的。模型在第一位置开始。用户在显示区域260上选择第一位所。然后,用户将光标移动到显示区域260上的第二位所。相应地,模型旋转到第二位置。如果用户将光标移动回显示区域260上的第一位所,则模型旋转回第一位置。以这种方式,可以构建虚拟表面,使得摇摄是可逆的。最后,显示区域260可以可选地具有区252,在此处少量旋转或没有旋转发生。在地理信息系统中,区252可以对应于天空或太空。如果用户将光标移动入区252,则摇摄可以停止。此外,根据区252中的光标位置来延伸的屏幕射线可以不与摇摄球面或虚拟表面相交。图3是根据本发明的一个实施例的GIS的示例性客户端300的体系结构图。在一个实施例中,客户端300包括用户交互模块310、本地存储器330、缓存节点管理器340、渲染器模块350、网络加载器365以及显示接口380。如图3中所示,用户交互模块310包括图形用户界面(GUI)312和运动模型318。本地存储器330包括查看规范332和四元节点树334。缓存节点管理器340包括检索列表345。例如,在一个实施例中,可以将客户端300的组件实现为运行于客户端机器上的软件。客户端300与GIS服务器(未示出)交互以将地球的图像和其它地理空间数据带到客户端300以供用户查看。地球的图像和其它地理空间数据一起形成在三维环境中的三维模型。在一个实施例中,按照可以互相异步(例如,时间独立)运行的功能来分组软件对象。总的来说,客户端300操作如下。用户交互模块310接收有关用户期望查看的位置的用户输入,以及通过运动模型318构建查看规范332。渲染器模块350使用查看规范332来决定待绘制哪些数据,然后绘制数据。缓存节点管理器340在异步线程控制下运行,以及通过用经由网络从远程服务器检索的四元节点填充四元节点树334来构造四元节点树334。在用户接口模块310的一个实施例中,用户使用GUIxa0312来输入位置信息。例如,这导致查看规范332的生成。将查看规范332放置在本地存储器330中,其中查看规范332由渲染器模块350使用。运动模型318使用经由GUIxa0312接收的位置信息来调整虚拟相机的位所或取向。例如,相机用于查看地球的所显示的三维模型。用户在他或她的计算机监视器上从虚拟相机的角度看见所显示的三维模型。在一个实施例中,运动模型318还基于虚拟相机的位所、虚拟相机的取向以及虚拟相机的水平和垂直视场来确定查看规范332。查看规范332定义被称为平截头体的虚拟相机的在三维空间内的可视量,以及平截头体例如关于三维地图的位所和取向。在一个实施例中,平截头体以截去顶端的棱锥的形状。平截头体具有可以随查看环境而改变的最小和最大的查看距离。随着使用GUIxa0312来操纵用户的对三维地图的查看,平截头体的取向和位所关于三维地图改变。因此,随着接收到用户输入,查看规范332改变。将查看规范332放置在本地存储器330中,其中查看规范332由渲染器模块350使用。将在下面更详细地描述查看规范332和GIS客户端300的其它组件。运动模型318使用若干子模块来控制使用虚拟表面的摇摄。子模块包括摇摄模块390、虚拟表面计算器模块392和旋转器模块394。运动模型318从GUIxa0312接受用户输入。如果用户输入是鼠标点击,则运动模型318可以例如通过函数调用来激活摇摄模块390。摇摄模块390根据用户输入来延伸射线,然后确定在三维模型与该射线之间的交点。摇摄模块390还可以构建摇摄球面。一旦构建摇摄球面,虚拟表面计算器模块392就可以将虚拟表面适配到摇摄球面。运动模型318从GUIxa0312接受第二用户输入。摇摄模块390根据第二用户输入来延伸另一条射线。摇摄模块390还计算在虚拟表面与该射线之间的交点。最后,旋转器模块394根据该交点来旋转三维模型。将在下面关于图4-6和7A-B更详细地描述对摇摄模块390、虚拟表面计算器模块392和旋转器模块394的操作。图4是用于使用虚拟表面来摇摄的方法400的流程图,该方法可以在操作图3中的运动模型318时使用。尽管关于运动模型318来描述方法400,但是这并不意味将方法400限制在运动模型318。方法400以在步骤402接收用户事件开始。如果用户事件是点击事件,则可以在步骤418计算替代射线。然后,在步骤404通过使屏幕射线或替代射线与三维模型相交来计算命中点。在步骤406,将摇摄球面适配到命中点,以及在步骤408,将虚拟表面适配到摇摄球面。如关于图1B所描述,可以根据命中点来生成摇摄球面。可以根据虚拟相机的位所来生成虚拟表面。接收鼠标移动事件,然后方法400前进到步骤410。在步骤410,使屏幕射线与摇摄表面和虚拟表面两者相交。在步骤412选择交点中的一个。如果所选择的交点在虚拟表面上,则在步骤414将该交点投影到摇摄球面上。最后,在步骤416,以由连接在步骤404确定的命中点和在步骤416选择的交点的线段所对(subtend)的角度旋转三维模型。将在下面关于图3中的运动模型318和图5A-B、6以及7A-B中的图更详细地描述每一个步骤。在步骤402,GUIxa0312可以接收两个用户事件—点击事件或移动事件中的一个。GUIxa0312可以响应于用户在图2中的显示区域202中的一个位所处点击鼠标或其它输入设备,接收点击事件。GUIxa0312可以在用户按住输入设备(诸如鼠标),并且将输入设备移动到显示区域202上的新位所时接收移动事件。这些事件可以导致GUIxa0312对摇摄模块390进行回调函数调用。在函数调用期间,GUIxa0312可以将有关事件的位所信息传递给摇摄模块390。如果用户事件是点击事件,则在步骤418摇摄模块390可以确定替代屏幕射线,如图5A中所图示。图5A示出了具有焦点506的虚拟相机。基于该点击事件,确定屏幕射线510。将关于图5B更详细地描述确定屏幕射线。线段514连接中心源112和焦点506。在线段514与屏幕射线510之间的角度516超过了阈值。由于角度516超过阈值,所以将角度516校整到为角度518的阈值。最后,替代射线518关于线段514以角度518从焦点506延伸。在步骤404,摇摄模块390通过使屏幕射线或替代射线与三维模型相交来计算命中点。将关于图5B中的图500详细描述步骤404。图500示出了地球的模型552。图500还示出了虚拟相机的焦点506。虚拟相机如关于图2所描述的用于捕捉并显示信息。虚拟相机具有焦距558和视口560。视口560对应于图2中的显示区域202。用户在显示区域202上选择位所,以及该位所对应于视口560上的点562。摇摄模块通过从虚拟相机延伸屏幕射线来确定与模型的交点,来确定命中点。在图500中,射线564从焦点506延伸通过点562。在另一个实施例中,射线564可以是如关于图5A所描述的来计算的替代射线。射线564在位置554处与模型552相交。因此,命中点在位置554处。射线564可以在建筑物或地形处与三维模型552相交。参见图3和4,如果射线与建筑物或地形相交,则在步骤406摇摄模块390可以创建摇摄球面。摇摄球面的中心源可以位于三维模型的中心,以及摇摄球面的半径可以是在模型的中心与在步骤404确定的命中点之间的距离。一旦在步骤406确定摇摄表面,在步骤408虚拟表面计算器模块392就计算虚拟表面。将虚拟表面适配到摇摄表面,以使虚拟表面和摇摄表面一起形成连续表面。虚拟表面可以是来自虚拟相机的透视角的凹面。在一个示例中,虚拟表面是摇摄表面的一部分的镜像。图6示出了图示了根据本发明的一个实施例的如何计算虚拟表面的图600。图600图示了一种计算虚拟表面的方式,然而还有其它计算虚拟表面的方式。如上所述,还可以将虚拟表面计算为凹面或地球的镜像。图600示出了查看具有中心源614的三维模型606的虚拟相机602。图600还示出了摇摄球面604。摇摄速率是下述速度:光标的移动以该速度旋转三维模型606。在一个实施例中,可以构建虚拟表面,使得摇摄速率在摇摄表面与虚拟表面之间的交点处达到最大值,并且跨虚拟表面保持恒定。以这种方式,存在从摇摄表面到虚拟表面的平滑过渡。为了确定虚拟表面,虚拟表面计算器模块392首先确定点,在该点处摇摄表面与虚拟表面连接。在图600中,摇摄表面在点616处与虚拟表面连接。点616可以对应于在使用虚拟表面之前相机必须相切到的程度的参数。在一个替选实施例中,点616可以是下述点:在该点处摇摄速率达到最大可容忍阈。使用点616,确定若干角度。标记为dθ的第一角度是在来自用户的鼠标点击的屏幕射线624与连接相机602和点616的线段618之间的角度。线段622连接中心源614与来自用户的鼠标点击的屏幕射线和摇摄模型的交点626。线段620连接中心源614与点616。标记为dΦ的第二角度是在线段622与线段620之间的角度。角度dθ和dΦ可以是较小偏移。第一角度dΦ与第二角度dθ的比率(例如dΦ/dθ)可以是摇摄速率。然后将在第一角度dθ与第二角度dΦ之间的比率用于确定虚拟表面。可以构建虚拟表面,使得摇摄速率dΦ/dθ跨整个表面保持恒定。为了做到这一点,确定连接虚拟相机602与中心源614的线段628。角度θ是在线段628与连接虚拟相机602和虚拟表面上的可变点632的线段630之间的角度。角度Φ是在线段628与连接中心源614和虚拟表面上的可变点632的线段634之间的角度。对于虚拟表面上的每一个可变点,角度θ和Φ满足以下等式:Φ-Φ0dΦ=θ-θ0dθ,---(1)]]>其中,θ0是在使用用户的鼠标点击生成的屏幕射线624与线段628之间的角度,以及Φ0是在线段622与线段628之间的角度。换句话说,定义虚拟表面,使得如果射线从虚拟相机以角度θ延伸,则该射线将在具有角度Φ和源614的球面坐标处与虚拟表面相交。重新安排所述等式,对于来自虚拟相机的每一个角度θ,可以如下确定球面坐标值Φ:Φ=(θ-θ0)dΦdθ+Φ0.---(2)]]>使用这个等式,图3的虚拟表面计算器模块392可以构建虚拟表面。在实施例中,可以使用与等式(1)和(2)没有本质不同的其它等式来计算虚拟表面。例如,可以将系数和偏移合并入等式。参见图3和4,GUIxa0312可以接收用户事件。如果用户事件是移动事件,则在步骤410摇摄模块390使屏幕射线与摇摄球面和虚拟表面两者相交。将在图7A-B中图示步骤410。图7A示出了图示了延伸屏幕射线以与虚拟表面相交的图700。图700示出了如关于步骤406和408所描述的来构建的摇摄球面704和虚拟表面702。图700还示出了具有焦点506、焦距558和视点560的虚拟相机。用户可以例如通过移动鼠标来选择新的点。用户所选择的点对应于视点560中的点706。摇摄模块390从焦点506延伸射线708通过点706。射线706在点710处与虚拟表面702相交。射线708如图7B中所示还可以与摇摄球面704相交。图7B包括图750。图750示出了在点764处与摇摄球面704相交的射线708。再次参见图3和4,一旦确定交点764和710,摇摄模块390就可以在步骤412选择所述点中的一个。摇摄模块390可以选择与虚拟相机最接近的点。在图750中,点710比点764更接近虚拟相机506。当选择虚拟表面702上的点710时,摇摄模块390可以在步骤414将点710投影到摇摄球面704上。摇摄模块390可以通过确定在点710与三维模型的中心源758之间的线段766来将点710投影到摇摄球面704上。然后,摇摄模块390确定在线段766与摇摄球面704之间在点762处相交。在一个实施例中,可以使用三角正弦规则来确定使屏幕射线708与虚拟表面702相交的点710。为了应用所述正弦规则,必须确定若干参数。首先,确定连接虚拟相机506与中心源758的线段768。其次,确定在线段768与屏幕射线708之间的角度θ。交点710相交满足等式:sin(Φ)A=sin(θ+Φ)B,---(3)]]>其中B是线段768的长度,A是在虚拟相机506与交点710之间的距离,以及Φ是在线段768与连接虚拟相机506和交点710的线段之间的角度。由于距离A小于在虚拟相机506与交点764之间的距离,所以旋转基于虚拟表面702上的点710发生。否则,模型将基于与摇摄球面的交点764旋转。在步骤416确定交点后,旋转器模块394根据在步骤404和412确定的点来改变三维模型的位置。在一个实施例中,旋转器模块394通过根据点旋转模型来改变模型的位置。在图7B中,图750示出了在步骤404响应于鼠标点击事件而确定的射线752和命中点754。图750还示出了响应于如上所述的移动事件而确定的点710。线段756连接命中点754与中心源758,以及线段766连接中心源758与点710。旋转器模块394以在线段756与线段766之间的角度760旋转三维模型。返回参见图3,将更详细地描述地理信息系统客户端300的各种组件。如前所述,查看规范332定义被称为平截头体的虚拟相机的在三维空间内的可视量,以及平截头体例如关于三维地图的位所和取向。根据本发明的一个实施例,查看规范332为虚拟相机指定三个主要参数集:相机三角架、相机镜头以及相机调焦能力。相机三角架参数集指定以下内容:虚拟相机位所:X、Y、Z(三个坐标);使虚拟相机相对于默认取向定向的方式,诸如航向改变角(例如:朝北?、朝南?、在中间?);斜度(例如:水平?、朝下?、朝上?、在中间?);以及偏航/滚动(例如:水平?、顺时针?、逆时针?、在中间?)。镜头参数集指定以下内容:水平视场(例如:长焦?、正常人眼-大约55度?、或广角?);以及垂直视场(例如,长焦?、正常人眼-大约55度?、或广角?)。调焦参数集指定以下内容:到近裁剪面的距离(例如,虚拟相机能够看到距“镜头”多近,比那更近的对象不被绘制);以及到远裁剪面的距离(例如,虚拟相机能够看到距“镜头”多远,比那更远的对象不被绘制)。在一个示例操作中,并且考虑上述相机参数,假设用户按下左箭头(或右箭头)键。这将发信号通知运动模型318查看应当向左(或向右)移动。运动模型318通过将较小值(例如,每箭头键按下1度)添加(或减少)到航向角,来实现这样的地平面“摇摄相机”类型的控制。类似地,为了向前移动虚拟相机,运动模型318通过首先计算沿查看方向的单位长度向量(HPR),并且在以期望的运动速度缩放该向量的X、Y、Z子分量中的每一个子分量后将该向量的X、Y、Z子分量添加到相机的位所,来改变虚拟相机的位所的X、Y、Z坐标。以这些或相似方式,运动模型318通过增量地更新XYZ和HPR来调整查看规范332以定义“恰好在移动之后的”新的查看位所。以这种方式,运动模型318负责在三维环境中导航虚拟相机。渲染器模块350具有与显示设备的视频刷新率相对应的周期(例如,每秒60周期)。在一个特定实施例中,渲染器模块350执行以下周期:(i)唤醒,(ii)读取已由运动模型318放置在渲染器所访问的数据结构中的查看规范332,(iii)遍历本地存储器330中的四元节点树334,以及(iv)绘制包含在驻存于四元节点树334中的四元节点中的可绘制的数据。可绘制的数据可以与边界框(例如,包含数据或其它这样的标识符的量)相关联。如果存在,则检查边界框以核实可绘制的数据在查看规范332内是否潜在地可视。绘制潜在可视数据,而忽略被认为是不可视的数据。因此,如现将更充分地解释的,渲染器使用查看规范332来确定驻存于四元节点树334中的四元节点的可绘制的有效载荷是否不会被绘制。初始,以及根据本发明的一个实施例,四元节点树334内没有数据要被绘制,以及渲染器模块350在默认情况下绘制星域(或其它适当的默认显示图像)。四元节点树334是用于渲染器350除该星域外进行的绘制的数据源。渲染器模块350通过试图访问驻存于四元节点树334中的每一个四元节点来遍历四元节点树334。每一个四元节点是具有多达四个引用和可选的数据有效载荷的数据结构。如果四元节点的有效载荷是可绘制的数据,则渲染器模块350将有效载荷的边界框(如果存在)与查看规范332进行比较,只要可绘制的数据未完全在平截头体外,并且基于其它因素不认为不适于绘制,绘制可绘制的数据。例如,这些其它因素可以包括距相机的距离、倾斜或其它这样的考虑。如果有效载荷不完全在平截头体外,并且不认为不适于绘制,则渲染器模块350还试图访问四元节点中的多达四个引用中的每一个。如果引用指向本地存储器(例如,存储器330或其它本地存储器)中的另一个四元节点,则渲染器模块350将试图访问在该其它四元节点中的任何可绘制的数据,并且还潜在试图访问在该其它四元节点中的多达四个引用中的任何引用。渲染器模块的对访问四元节点的多达四个引用中的每一个的企图由四元节点本身检测。如前所解释的,四元节点是可以具有数据有效载荷和多达四个对其它文件的引用的数据结构,其中多达四个对其它文件的引用中的每一个进而可以是四元节点。由四元节点所引用的文件在此被称为该四元节点的孩子,以及引用的四元节点在此被称为父亲。在一些情况下,文件不但包含所引用的孩子,还包含该孩子的后代。这些聚集被称为缓存节点,以及可以包括若干四元节点。这样的聚集在数据库构建的过程中发生。在一些情况下,数据有效载荷为空。例如,对其它文件的引用中的每一个包括,如果存在的话,用于该文件的文件名和在本地存储器中的相应地址。初始,所引用的文件均存储在一个或多个远程服务器上(例如,GIS的服务器上),并且没有可绘制的数据存在于用户的计算机上。四元节点和缓存节点具有内置的访问器功能。如前所解释的,渲染器模块的对访问四元节点的多达四个引用中的每一个的企图由四元节点本身检测。在渲染器模块试图访问具有文件名但没有相应地址的孩子四元节点时,父亲四元节点(例如,通过操作其访问器功能)将该文件名放置到缓存节点检索列表345上。缓存节点检索列表包括识别待从GIS服务器下载的缓存节点的信息的列表。如果四元节点的孩子具有非空的本地地址,则渲染器模块350使用本地存储器330中的该地址来访问孩子四元节点。四元节点被配置为使得具有可绘制的有效载荷的那些四元节点可以在其有效载荷内包括边界框或其它位置标识符。渲染器模块350执行查看平截头体挑选,其将四元节点有效载荷(如果存在)的边界框/位置标识符与查看规范332进行比较。如果边界框与查看规范332完全脱离(例如,没有可绘制的数据在平截头体内),则可绘制的数据的有效载荷将不会被绘制,即使其已经从GIS服务器检索并且存储在用户的计算机上。否则,绘制可绘制的数据。查看平截头体挑选在渲染器模块350遍历四元节点的孩子之前,确定该四元节点的有效载荷的边界框(如果存在)是否与查看规范332完全脱离。如果四元节点的边界框与查看规范332完全脱离,则渲染器模块350不会试图访问该四元节点的孩子。孩子四元节点从不超出其父亲四元节点的边界框。因此,一旦查看平截头体挑选确定父亲四元节点完全脱离于查看规范,就可以假设,该四元节点的所有后代也完全脱离于查看规范332。四元节点和缓存节点有效载荷可以包含各种类型的数据。例如,缓存节点有效载荷可以包含卫星图像、文本标签、行政边界、用于渲染道路的3维顶点以及点、线或多边形连接、以及其它类型的数据。将在任何四元节点有效载荷中的数据量限制在最大值。然而,在一些情况下,以特定分辨率描述区域所需要的数据量超过该最大值。在那些情况下,诸如处理矢量数据,一些数据包含在父亲有效载荷中,以及以同一分辨率的其余数据包含在孩子的有效载荷中(以及甚至可能在孩子的后代内)。还可能存在以下情况:孩子可以包含比其父亲更高分辨率或与其父亲相同分辨率的数据。例如,父亲节点可以具有与该父亲相同分辨率的两个孩子,以及与该父亲不同分辨率(例如,更高)的两个额外孩子。缓存节点管理器340线程以及一个或多个网络加载器365线程中的每一个异步于渲染器模块350和用户交互模块310操作。渲染器模块350和用户交互模块310还可以相互异步操作。在一些实施例中,独立执行多达8个网络加载器365线程,每一个异步于渲染器模块350和用户交互模块310操作。缓存节点管理器340线程通过用从GIS服务器检索的四元节点填充四元节点树来将四元节点树334构造在本地存储器330中。四元节点树334在启动或开启客户端系统时从根节点开始。根节点包含文件名(但是没有相应地址)以及没有数据有效载荷。如前所述,该根节点在其已由渲染器模块350首次遍历后使用内置的访问器功能来向缓存节点检索列表345自报告。在每一个网络加载器365线程中,网络加载器遍历缓存节点检索列表345(其在图3中所示的实施例中包括在缓存节点管理器340中,但是还可以位于其它地方,诸如本地存储器330或其它存储设施),并且使用缓存节点的文件名从GIS服务器请求下一缓存节点。网络加载器仅请求在缓存节点检索列表上出现的文件。缓存节点管理器340为所返回的文件分配本地存储器330(或其它适当的存储设施)中的空间,其中所返回的文件被组织为是父亲四元节点的后代的一个或多个新的四元节点。如果必要(例如,为了补充在服务器端的任何加密或压缩),缓存节点管理器340还可以解密或解压缩从GIS服务器返回的数据文件。缓存节点管理器340用与本地存储器330地址相对应的用于每一个新构建的孩子四元节点的地址来更新四元节点树334中的父亲四元节点。在渲染器模块350的情况下独立并异步地,在它其后遍历四元节点树334,并且遍历更新的父亲四元节点时,渲染器模块350找到本地存储器中的与孩子四元节点相对应的地址,并且可以访问孩子四元节点。渲染器的对孩子四元节点的遍历根据对父亲四元节点所遵循的相同步骤来进行。这在四元节点树334中继续直到到达如前所解释的完全脱离于查看规范332或被基于其它因素认为不适于绘制的节点。在该特定实施例中,注意的是,在缓存节点管理器线程与渲染器模块350之间除渲染器模块的对由缓存节点管理器线程写入或提供的四元节点的读取外,没有其它通信。进一步注意的是,在该特定实施例中,缓存节点以及由此四元节点继续被下载直到所返回的孩子只包含如前所解释的完全脱离于查看规范332或不适于绘制的有效载荷。显示接口380(例如,显示接口卡)被配置为允许来自映射模块的数据被发送给与用户的计算机相关联的显示,以使用户能够查看所述数据。可以用常规技术实现显示接口380。发明内容和摘要部分可以阐明发明人考虑的本发明的一个或多个而非所有的示例性实施例,因此发明内容和摘要部分并不意在以任何方式来限制本发明和所附的权利要求。在上面借助于说明指定的功能及其关系的实现的功能构造块来描述了本发明。在此为了便于描述,任意地限定了这些功能构造块的边界。可以限定替选边界,只要所述指定的功能及其关系被适当地执行。特定实施例的前述描述如此充分地揭示了本发明的一般特性,使得其他人可以在不背离本发明的一般思想的情况下,通过应用在本领域的技术内的知识而容易地修改和/或调整本发明的一般特性以用于这样的特定实施例的各种应用,而不用进行过度的实验。因此,基于在此提供的教导和指导,这样的调整和修改意在在所公开的实施例的等同物的含义和范围内。应当明白的是,在此的措词或术语用于描述而非限制的目的,因此本说明书的术语或措词应当由技术人员根据所述教导和指导来解释。本发明的宽度和范围不应当由上述示例性实施例的任何一个限制,而是应当仅根据所附权利要求及其等同物来限定。